package com.example.domain.dto.pricing;

import com.example.domain.entity.ItemDiscountRule;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * 单品折扣规则DTO
 * 
 * @author Means
 * @since 2025-10-27
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ItemDiscountRuleDTO {
    
    /**
     * 规则ID
     */
    private String id;
    
    /**
     * 优惠规则ID
     */
    private String pricingRuleId;
    
    /**
     * 商品ID
     */
    private String productId;
    
    /**
     * 商品名称（冗余字段，需要关联查询填充）
     */
    private String productName;
    
    /**
     * 折扣率（如0.8表示8折）
     */
    private BigDecimal discountRate;
    
    /**
     * 从实体类创建DTO（基础版本，不包含关联信息）
     * 
     * @param rule 单品折扣规则实体
     * @return ItemDiscountRuleDTO
     */
    public static ItemDiscountRuleDTO from(ItemDiscountRule rule) {
        if (rule == null) {
            return null;
        }
        
        return ItemDiscountRuleDTO.builder()
                .id(rule.getId())
                .pricingRuleId(rule.getRuleId())
                .productId(rule.getProductId())
                .discountRate(rule.getDiscountRate())
                .build();
    }
}

